﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;

public partial class Indeks : System.Web.UI.Page
{
    /// <summary>
    /// <para>Vo Page_Load najprvo se proveruva dali korisnikot e od soodvetniot tip.Ako sesiskata promenliva na koja i dodavame vrednost vo Login.aspx ne e ednakva na 1 korisnikot se redirekira na NO.aspx stranata. 
    /// Ako vrati true togas vo Sesiska promenliva se zacuvuva momentalnata strana i vo soodvetni labeli se stavaat imeto, prezimeto i indeksot cii informacii se cuvaat vo sesiski promenlivi.
    /// Se povikuva metodot ispolni.</para>
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Page_Load(object sender, EventArgs e)
    {
        if ((int)Session["tip"] != 1) Response.Redirect("NO.aspx");
        else Session["strana"] = Request.RawUrl.ToString();

        if (!IsPostBack)
        {
            // vo labeli se smestuvaat imeto, prezimeto i indeksot
            lblIme.Text = "Име: " + Session["ime"].ToString();
            lblPrezime.Text = "Презиме: " + Session["prezime"].ToString();
            lblIndeks.Text = "Индекс: " + Session["indeks"].ToString();
            ispolni();      //se povikuva  funkcijata ispolni
        }
    }

   /// <summary>
   /// <para>Se ostvaruva konekcija do bazata i se zemaat polozenite predmeti so nivnite soodvetni oceni na korisnikot.Informaciite izvadeni od bazata se stavaat vo gridview.
   /// Sekoja ocena se stava vo lista so koja se povikuva veb servis koj go presmetuva prosekot na korisnikot. Prosekot se stava vo labela.</para>
   /// </summary>
    public void ispolni()
    {
        SqlConnection konekcija = new SqlConnection();      //kreiranje konekcija
        konekcija.ConnectionString = ConfigurationManager.ConnectionStrings["mojaKonekcija"].ConnectionString;
        SqlCommand komanda = new SqlCommand();      //kreiranje na komanda
        komanda.Connection = konekcija;
        komanda.CommandText = "SELECT DiSTINCT o.ocena, p.Predmet FROM Ocena AS o, Predmet AS p WHERE p.p_ID=o.o_s_predmet AND o.o_s_student='" +  Session["korisnicko"].ToString() + "'";
        SqlDataAdapter adapter = new SqlDataAdapter(komanda);
        DataSet ds = new DataSet();
        List<int> ocenki = new List<int>();
        try
        {
            konekcija.Open();
            SqlDataReader citac = komanda.ExecuteReader();
            while (citac.Read())       
            {
                ocenki.Add(Convert.ToInt32(citac["ocena"].ToString())); // se dodavaat ocenite vo lista
            }
            citac.Close();
            adapter.Fill(ds, "Oceni");      //se polni gridview
            gvOcena.DataSource = ds;
            gvOcena.DataBind();
            ViewState["dataset"] = ds;
        }
        catch (Exception er) { }
        finally
        {
            konekcija.Close();      //zatvaranje na konekcija
        }
        int[] ocena_web = ocenki.ToArray();
        web_servis.IO_Raspored_web WebServisce = new web_servis.IO_Raspored_web();
        float prosek = WebServisce.Prosek(ocena_web); // se povikuva veb servisot
        lblProsek.Text = prosek.ToString();
    }
}